package cn.yitun.chat.yitunserverimbase.dao.group;

import cn.yitun.chat.yitunservercommonlib.crud.yitun.CrudDao;
import cn.yitun.chat.yitunservercommonlib.dataentity.dto.group.GroupMemberDto;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.group.GroupMemberInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.group.GroupMemberVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 群成员表
 * @author chenyitun
 * @email chenyitun@163.com
 * @date 2020-05-27 14:42:53
 */
@Mapper
public interface GroupMemberDao extends CrudDao<GroupMemberDto, GroupMemberInfo, GroupMemberVo> {

	int absDel(Long id);

	int batchAbsDel(Long[] ids);

	/**
	 * 通过userId,groupId获取群成员
	 * @param groupId
	 * @param userId
	 * @return
	 */
    GroupMemberVo getVOByGroupIdUserId(@Param("groupId") Long groupId, @Param("userId") Long userId);

	/**
	 * 更新群成员职位
	 * @param groupId
	 * @param oldOwnerUserId
	 * @param type
	 * @return
	 */
    int updatePosition(@Param("groupId") Long groupId,
					   @Param("oldOwnerUserId") Long oldOwnerUserId,
					   @Param("type") String type);

    /**
     * 删除群主以外的其他成员
     * @param groupId
     * @param ownerUserId
     * @return
     */
    int deleteOutUserIdByGroupId(@Param("groupId") Long groupId,
                                 @Param("ownerUserId") Long ownerUserId);

    /**
     * 更新群成员备注
     * @param groupId
     * @param userId
     * @param nickname
     * @return
     */
    int updateNickname(@Param("groupId") Long groupId,
                       @Param("userId") Long userId,
                       @Param("nickname") String nickname);

    /**
     * 删除
     * @param groupId
     * @param userId
     * @return
     */
    int deleteByGroupIdUserId(@Param("groupId") Long groupId,
                              @Param("userId") Long userId);
}
